package bid.yanhj.yanhaijiang.fragment;

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 * Fragment 应用大屏手机 平板
 * 类似于小型Activity 有自己的生命周期 受Acitviyty影响
 *
 * 静态使用 动态使用
 *
 * v4 app 都一样  （考虑兼容）
 * v4 是不能直接使用Activity
 *
 *
 * 动态
 * 1 获得FragmentManager对象
 * 2 获得FragmentTranscation对象
 * 3 调用add replace方法加载fragment对象
 * 4 调用commit方法来提交事务
 *
 * FragmentManager地使用
 *      beginTransaction  开启业务操作
 *      findFragmentById  根据id找frgment实例
 *      popBackStack
 *      addOnBackStackChangeListener
 *
 * FragmentTranscation
 *      add
 *      replace
 *      remove
 *      hide
 *      show
 *      addToBackStack  允许用户按back键返回前一个fragment状态
 *      commit
 *
 *  Fragment 实在Activity内部  生命周期一一对应
 *
 *  Activity Fragment 数据传递
 *  1、Activity创建Bundle数据包， 调用Fragment实例的setArguments(bundle)
 *  从而将Buidle数据包传给Fragment,然后Fragment中调用getArguments获得
 *  Buidle对象，然后进行解析就可以了
 *
 *  2、Fragment 传递数据给Activity
 *  在Fragment 中定义一个内部回调接口， 再让包含该Fragment的Activity实现回调接口，
 *  Fragment就可以用过回调接口传递数据了
 *
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

//    private Button aBtn, bBtn;
    private Button sendBtn;
    private EditText inputEt;
    private AFragment fragment;
    private TextView mainTv;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//        aBtn = findViewById(R.id.btn_a);
//        bBtn = findViewById(R.id.btn_b);
//
//        aBtn.setOnClickListener(this);
//        bBtn.setOnClickListener(this);

        sendBtn = findViewById(R.id.send_btn);
        sendBtn.setOnClickListener(this);

        inputEt = findViewById(R.id.input_et);

        mainTv = this.<TextView>findViewById(R.id.main_tv);

        fragment = new  AFragment();
        // 作为Fragment初始参数放在Fragment里
        String s = "初始值";
        Bundle bundle = new Bundle();
        bundle.putString("data", s);
        fragment.setArguments(bundle);

        // 实现接口
        fragment.setDataChangeListener(new DataChangeListener() {
            @Override
            public void onDataChange(String data) {
                mainTv.setText(data);
            }
        });

        FragmentManager supportFragmentManager = getSupportFragmentManager();
        supportFragmentManager
                .beginTransaction()
                .replace(R.id.fragmen_content, fragment)
                .commit();
    }

//    @Override
//    public void onClick(View v) {
//        // 获取FragmentManager  v4
//        FragmentManager supportFragmentManager = getSupportFragmentManager();
//        FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
//
//        switch (v.getId()) {
//            case R.id.btn_a:
//                // 1 替换那个布局  2 替换那个Fragment
//                fragmentTransaction.replace(R.id.fragmen_content, new AFragment());
//                break;
//            case R.id.btn_b:
//                fragmentTransaction.replace(R.id.fragmen_content, new BFragment());
//                break;
//        }
//
//        fragmentTransaction.commit();
//    }

    @Override
    public void onClick(View v) {
        String str = inputEt.getText().toString();
        fragment.setData(str);
    }

}
